/**
 * 
 */
package com.domesticmouse.waveoteditor.client.ops;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;

import com.domesticmouse.waveoteditor.client.wave.model.document.operation.impl.AttributesUpdateImpl;
import com.domesticmouse.waveoteditor.client.wave.model.document.operation.impl.DocOpBuilder;
import com.domesticmouse.waveoteditor.client.wave.model.util.Pair;

@SuppressWarnings("serial")
public class UpdateAttributesDocOpComponent implements DocOpComponent, Serializable {

	private ArrayList<UpdateAttribute> updateAttributes = new ArrayList<UpdateAttribute>();

	public void setUpdateAttributes(ArrayList<UpdateAttribute> updateAttributes) {
		this.updateAttributes = updateAttributes;
	}

	@Override
	public void build(DocOpBuilder builder) {
		HashMap<String, Pair<String, String>> updates = new HashMap<String, Pair<String, String>>();
		for (UpdateAttribute attribute : updateAttributes) {
			updates.put(attribute.getKey(), new Pair<String, String>(attribute.getOldValue(), attribute.getNewValue()));
		}

		AttributesUpdateImpl update = new AttributesUpdateImpl(updates);

		builder.updateAttributes(update);
	}

	public void addUpdate(String changeKey, String oldValue, String newValue) {
		UpdateAttribute updateAttribute = new UpdateAttribute();
		updateAttribute.setKey(changeKey);
		updateAttribute.setOldValue(oldValue);
		updateAttribute.setNewValue(newValue);
		updateAttributes.add(updateAttribute);

	}

}